package tasks.zhuanyeji;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class TaskFenYeQiQwen {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int maxCount = scanner.nextInt();   // 总页数
        int pageCount = scanner.nextInt();  // 最多显示的数字页码数量
        int currentPage = scanner.nextInt(); // 当前页码
        scanner.close();

        // 情况1: 总页数 <= 显示数量，直接输出所有页码
        if (maxCount <= pageCount) {
            StringBuilder sb = new StringBuilder();
            for (int i = 1; i <= maxCount; i++) {
                if (i > 1) sb.append(" ");
                sb.append(i);
            }
            System.out.println(sb.toString());
            return;
        }

        // 情况2: 总页数 > 显示数量，需要智能省略
        List<Object> tokens = new ArrayList<>();

        // 必须显示的固定页码
        boolean showFirst = true;    // 始终显示第一页(1)
        boolean showLast = true;     // 始终显示最后一页(maxCount)
        boolean showCurrent = true;  // 始终显示当前页

        // 特殊处理：当前页是第一页或最后一页
        if (currentPage == 1 || currentPage == maxCount) {
            showCurrent = false; // 避免重复
        }

        // 计算必须显示的数字页码数
        int fixedDigits = 0;
        if (showFirst) fixedDigits++;
        if (showLast) fixedDigits++;
        if (showCurrent) fixedDigits++;

        // 剩余可分配的数字页码数量
        int remainingDigits = pageCount - fixedDigits;
        remainingDigits = Math.max(0, remainingDigits); // 不能为负

        // 计算可分配范围
        int frontAvailable = (currentPage > 2) ? (currentPage - 2) : 0; // 页码2到currentPage-1
        int backAvailable = (currentPage < maxCount - 1) ? (maxCount - currentPage - 1) : 0; // 页码currentPage+1到maxCount-1

        // 分配额外页码 (x=前面, y=后面)
        int x = 0, y = 0;

        // 找到最优分配：使|(1+x) - (1+y)| = |x-y|最小
        if (remainingDigits > 0) {
            int bestDiff = Integer.MAX_VALUE;

            // 枚举所有可能的x值
            for (int testX = 0; testX <= Math.min(remainingDigits, frontAvailable); testX++) {
                int testY = Math.min(remainingDigits - testX, backAvailable);
                int diff = Math.abs(testX - testY);

                // 找到差值更小，或差值相同但x更大的方案
                if (diff < bestDiff || (diff == bestDiff && testX > x)) {
                    bestDiff = diff;
                    x = testX;
                    y = testY;
                }
            }
        }

        // ===== 构建分页字符串 =====

        // 1. 添加第一页
        tokens.add(1);

        // 2. 处理当前页前面的部分
        if (currentPage > 2 && x > 0) {
            int startPage = currentPage - x;

            // 需要省略号：1和startPage不连续
            if (startPage > 2) {
                tokens.add("...");
            }

            // 添加连续页码
            for (int i = startPage; i < currentPage; i++) {
                tokens.add(i);
            }
        } else if (currentPage > 2) {
            // 没有足够槽位显示额外页码，直接用省略号
            tokens.add("...");
        }

        // 3. 添加当前页（如果不是第一页或最后一页）
        if (showCurrent) {
            tokens.add(currentPage);
        }

        // 4. 处理当前页后面的部分
        if (currentPage < maxCount - 1 && y > 0) {
            int endPage = currentPage + y;

            // 添加连续页码
            for (int i = currentPage + 1; i <= endPage; i++) {
                tokens.add(i);
            }

            // 需要省略号：endPage和maxCount不连续
            if (endPage < maxCount - 1) {
                tokens.add("...");
            }
        } else if (currentPage < maxCount - 1) {
            // 没有足够槽位显示额外页码，直接用省略号
            tokens.add("...");
        }

        // 5. 添加最后一页（如果总页数>1）
        if (maxCount > 1) {
            tokens.add(maxCount);
        }

        // ===== 输出结果 =====
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < tokens.size(); i++) {
            if (i > 0) sb.append(" ");
            sb.append(tokens.get(i));
        }
        System.out.println(sb.toString());

        // 调试信息：验证数字页码数量
        int digitCount = 0;
        for (Object token : tokens) {
            if (token instanceof Integer) digitCount++;
        }
        // System.out.println("数字页码数量: " + digitCount + "/" + pageCount); // 调试用
    }
}
